// function getHttp(url) {
//   const xhr = new XMLHttpRequest();

//   xhr.open('GET', url, true);

//   xhr.onreadystatechange = function () {
//     if (xhr.readyState === 4) {
//       if (xhr.status === 200) {
//         alert(xhr.responseText);
//       } else {
//       }
//     }
//   };

//   xhr.send(null);
// }

// function postHttp(url, data) {
//   const xhr = new XMLHttpRequest();
//   xhr.open('POST', url, true);
//   xhr.onreadystatechange = function () {
//     if (xhr.readyState === 4) {
//       if (xhr.status === 200) {
//         alert(xhr.responseText);
//       }
//     }
//   };
//   xhr.send(JSON.stringify(data)); // 发送的是字符串
// }

/**
 * xhr.readyState 的返回值含义：
 * 0 - 未初始化，还没有调用send()方法
 * 1 - 载入，已调用send()方法，正在发送请求
 * 2 - 载入完成，send()方法执行完成，已接收到全部响应内容
 * 3 - 交互，正在解析响应内容
 * 4 - 完成，响应内容解析完成，可以在客户端调用
 *
 * xhr.status 的返回值含义：
 * 2xx - 表示成功处理请求，如200
 * 3xx - 需要重定向，浏览器直接跳转，如301，302，304
 * 4xx - 客户端请求错误，如403，404
 * 5xx - 服务端错误，如501，500
 *
 */

function ajax(method, url, requestData) {
  const p = new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.open(method, url, true);
    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          resolve(xhr.responseText);
        } else if (xhr.status === 404) {
          reject(new Error('404 Not Found'));
        } else {
          reject(new Error('request error, please check the url.'));
        }
      }
    };

    requestData = requestData ? JSON.stringify(requestData) : null;
    xhr.send(requestData);
  });

  return p;
}

ajax('GET', './1. 实现Promise功能2.js').then((res) => {
  console.log(res);
});
